/*
    给定参数n 从1到n会有n个整数 1，2，3，...n
    这n个数字共有n!种排列 按大小顺序升序列出所有排列情况
    并一一标记
    当n=3时，所有排列如下
    "123","132","213","231","312","321"
    给定n和k 返回第n个排列

    输入描述
    第一行为n
    第二行为k
    n的范围是 1~9
    k的范围是 1~n!

    输出描述
    输出排列第k位置的数字

    示例一：
    输入
    3
    3
    输出
    213

    示例二:
    输入
    2
    2
    输出
    21
     */

    const getPermutation = (n,k) =>{
      let result = [];
      let use = new Set();
      const backstack = (temp) => {
        if(temp.length === n){
          result.push(temp.join(''))
          return;
        }
        for(let i = 1;i<=n;i++){
          if(use.has(i)) continue;
          temp.push(i);
          use.add(i);
          backstack(temp);
          temp.pop();
          use.delete(i);
        }
      }
      backstack([])

      result.sort((a,b) => {
        return a-b
      })
      console.log(result[k-1])
    }
    getPermutation(3,3)